package domain.tournament;

import java.util.List;

import domain.match.IGameMatch;
import domain.users.User;

/**
 * The ITournament interface defines certain method signatures, representing
 * events within a certain tournament. Together with the Observer pattern this
 * interface and it's implementing class will be used to notify client's for
 * certain tournament events that has occurred.
 */
public interface ITournament {

	public void startGame();

	public void endGame();

	public User getWinner();

	public void gameStarted();

	public void gameEnded();

	public void gameAborted();

	public void playerConnected(User player);

	public void playerDisconnected(User player);

	public String getTitle();

	public List<IGameMatch> getMatches();
	
	public void setAdvertiser(User advertiser);
	
	public int getTournamentID();
	
	public int getNumPlayers();
	
	public void addPlayer(User player);
	
	
}
